<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="./../../resources/templates/baseTemplate.xhtml">
    <ui:define name="content">
        <p:fieldset legend="Gerenciar Recurso">
            <h:form id="frmRecursos">
                <!-- Exibicaoo de mensagens gerais -->
                <p:growl id="gMessages" 
                         sticky="false" 
                         globalOnly="true" />

                <!-- Exibicao da lista de recursos -->
                <p:dataTable id="dtRecursos" 
                             value="#{recursoBean.lstRecursos}"
                             paginator="true" rows="5" 
                             rowsPerPageTemplate="5,10"
                             paginatorPosition="bottom"
                             paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                             var="atual">

                    <f:facet name="header">
                        <p:commandButton id="cbViewNovo" 
                                         value="Novo" type="button" 
                                         styleClass="cbViewNovo" 
                                         onclick="dlgNovo.show();"
                                         update=":dlgNovoRecurso"
                                         process="@this">
                            <p:resetInput target="dlgNovoRecurso"/>
                        </p:commandButton>
                    </f:facet>
                    <!-- Colunas de edição e exclusão -->
                    <p:column>
                        <f:facet name="header">
                            <h:outputLabel value="Editar"/>
                        </f:facet>
                        <p:commandButton id="cbViewEditar"  
                                         image="ui-icon-pencil" 
                                         title="Editar"
                                         update=":frmEditar:pEditarRecurso"
                                         oncomplete="dlgEditar.show();">
                            <f:setPropertyActionListener value="#{atual}" 
                                                         target="#{recursoBean.recursoSelecionado}" />
                        </p:commandButton>
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputLabel 
                                value="Excluir"/>
                        </f:facet>
                        <p:commandButton id="cbViewExcluir" 
                                         onclick="dlgExcluir.show();" 
                                         icon="ui-icon-close" 
                                         title="Excluir">
                            <f:setPropertyActionListener value="#{atual}" 
                                                         target="#{recursoBean.recursoSelecionado}" />
                        </p:commandButton> 
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            Descrição do recurso
                        </f:facet>
                        <h:outputLabel value="#{atual.dscRecurso}"/>
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            Observação
                        </f:facet>
                        <h:outputLabel value="#{atual.obsRecurso}"/>
                    </p:column>
                </p:dataTable>
            </h:form>

            <!-- Caixa de diálogo de inclusão -->
            <p:dialog id="dlgNovoRecurso" 
                      widgetVar="dlgNovo" 
                      modal="true" 
                      header="Novo Recurso"
                      resizable="false">
                <h:form id="frmNovo">
                    <p:panel id="pNovoRecurso">
                        <p:messages id="mNovoMessages" 
                                    redisplay="false" />
                        <p:panelGrid columns="2">
                            <h:outputLabel value="Descrição:"/>
                            <p:inputText value="#{recursoBean.descricao}" 
                                         required="true"
                                         requiredMessage="Digite a descrição do recurso."/>

                            <p:outputLabel value="Tipo de Recurso:"/>
                            <p:selectOneMenu value="#{recursoBean.tipoRecursoSelecionado}" 
                                             effect="fade" 
                                             required="true" 
                                             requiredMessage="Selecione um tipo de recurso."> 
                                <f:converter converterId="conversorTipoRecurso"/>
                                <f:selectItem itemLabel="Selecione um item..." 
                                              itemValue=""/>
                                <f:selectItems value="#{recursoBean.lstRecursos}" 
                                               var="atual" 
                                               itemLabel="#{atual.dscRecurso}" 
                                               itemValue="#{atual}">
                                </f:selectItems>
                            </p:selectOneMenu>
                            <p:commandButton value="Cancelar" 
                                             immediate="true" 
                                             onclick="dlgNovo.hide()"/>
                            <p:commandButton id="cbNovoSalvar" value="Salvar" 
                                             actionListener="#{recursoBean.cadastrarRecurso}"
                                             oncomplete="handleSalvo(xhr, status, args);" 
                                             update=":frmPublicos:dtPublicos :frmNovo :frmPublicos:gMessages"
                                             ajax="true"/>
                        </p:panelGrid>
                    </p:panel>
                </h:form>
            </p:dialog>

            <!-- Caixa de diálogo de exclusão -->
            <p:confirmDialog id="dialogoExcluir" message="Deseja realmente excluir?"
                             header="Excluir recurso" severity="alert" 
                             widgetVar="dlgExcluir">
                <h:form id="frmExcluir">
                    <p:commandButton value="Cancelar" 
                                     onclick="dlgExcluir.hide()" type="button" /> 
                    <p:commandButton value="Continuar"
                                     update=":frmRecursos:dtRecursos :frmRecursos:gMessages" 
                                     oncomplete="dlgExcluir.hide()"
                                     actionListener="#{recursoBean.excluirRecruso}"/>
                </h:form>
            </p:confirmDialog>
            <!-- Caixa de diálogo de edição -->
            <p:dialog id="dialogoEditar" 
                      widgetVar="dlgEditar" 
                      header="Editar recurso"
                      resizable="false" modal="true">
                <h:form id="frmEditar">
                    <p:panel id="pEditarRecurso">
                        <p:messages id="mEditarMessages" 
                                    redisplay="false" />
                        <p:panelGrid columns="2">
                            <p:outputLabel id="olEditarDscRecurso" 
                                           value="Nome:" 
                                           for="itEditarDscRecurso"/>
                            <p:inputText value="#{recursoBean.recursoSelecionado.dscRecurso}" 
                                         required="true"
                                         requiredMessage="Digite a descrição do recurso."/>

                            <p:outputLabel value="Tipo de recurso:"/>
                            <p:selectOneMenu id="somEditarTipoRecurso" 
                                             value="#{recursoBean.recursoSelecionado.tdTipoRecurso}" 
                                             effect="fade"
                                             required="true"
                                             requiredMessage="Selecione um tipo de recurso.">
                                <f:converter converterId="conversorTipoRecurso"/>
                                <f:selectItem itemLabel="Selecione um item..." 
                                              itemValue=""/>
                                <f:selectItems value="#{recursoBean.lstRecursos}" 
                                               var="atual" 
                                               itemLabel="#{atual.dscRecurso}" 
                                               itemValue="#{atual}"></f:selectItems>
                            </p:selectOneMenu>
                            <p:commandButton value="Cancelar" 
                                             immediate="true" 
                                             onclick="dlgEditar.hide()"/>
                            <p:commandButton id="cbEditarSalvar" 
                                             value="Salvar" 
                                             actionListener="#{recursoBean.alterarRecurso}"
                                             oncomplete="handleEditar(xhr, status, args);" 
                                             update=":frmPublicos:dtPublicos :frmEditar :frmPublicos:gMessages"/>
                        </p:panelGrid>
                    </p:panel>
                </h:form>
            </p:dialog>
        </p:fieldset>
        <!-- Javascript responsável por fechar a caixa de diálogo ao cadastrar-->
        <script type="text/javascript">
            function handleSalvo(xhr, status, args){
                if(args.salvo){
                    dlgNovo.hide();
                }
            }
            function handleEditar(xhr, status, args){
                if(args.editado){
                    dlgEditar.hide();
                }
            }
        </script>
    </ui:define>
</ui:composition>

